package geraeteverwaltung;


import java.util.ArrayList;


/**
 * Die Klasse zur Verwaltung der Benutzerobjekte.
 * @author user
 */
public class BenutzerManager
{
	private Benutzer benutzer;
	private ArrayList<Benutzer> benutzerliste;
	private final PersistenteDaten persistente_daten;

        
        /**
         * Konstruktor der Klasse
         * Erstellt eine benutzerliste zur
         * Aufnahme der Benutzer-Objekte.
         * Erstelle ein PersistenteDaten Objekt
         */
        public BenutzerManager ()
        {
            benutzerliste = new ArrayList();
            persistente_daten = new PersistenteDaten();
            persistente_daten.setBenutzerManager(this);
        }
        
        /**
         * Setter für das Attribut benutzer
         * @param benutzer 
         */
	public void setBenutzer( Benutzer benutzer )
	{
		this.benutzer=benutzer;
	}
	
        /**
         * Getter für das Attribut benutzer
         * @return benutzer oder null
         */
	public Benutzer getBenutzer(Integer benutzerID)
	{            
            try {
                benutzer = benutzerliste.get(benutzerID - 1);
            } catch (IndexOutOfBoundsException e) {
                return null;
            }
            
            return benutzer;
	}
	
        /**
         * Setter für das Attribut benutzerliste
         * @param benutzerliste 
         */
	public void setBenutzerliste( ArrayList<Benutzer> benutzerliste )
	{
		this.benutzerliste=benutzerliste;
	}
	
        /**
         * Getter für das Attribut benutzerliste
         * @return benutzerliste
         */
	public ArrayList<Benutzer> getBenutzerliste()
	{
		return benutzerliste;
	}

        /**
         * Liefert die Größe der Benutzerliste und damit die Benutzeranzahl
         * @return Anzahl der Elemente
         */
        public Integer getBenutzeranzahl ()
        {
            return benutzerliste.size();
        }
        
        /**
         * Prüft Benutzer und Kennwort und liefert die Rolle bzw.
         * den String 'falsch', wenn das Login nicht existiert.
         * @param benutzername
         * @param kennwort
         * @return Die Rolle oder "falsch"
         */
        public String checkLogin (String benutzername, String kennwort)
        {
            Benutzer b;
            
            for (int i=1; i <= getBenutzeranzahl(); i++)
            {
                b = getBenutzer(i);
                if (b.getBenutzername().equals(benutzername) && b.getKennwort().equals(kennwort))
                {
                    return b.getRolle();
                }
            }
            
            return "falsch";
        }
        
        /**
         * Erstellt einen neuen Benutzer und fügt ihn
         * der Benutzerliste an.
         */
        public void erstelleBenutzer () 
        {
            boolean value;

            benutzer = new Benutzer();
            value = benutzerliste.add(benutzer);
        }
        
        /**
         * Entfernt den angegebenen von der benutzerliste und
         * reorganisiert verbleibenden Einträge.
         * @param benutzer 
         */
        public void entferneBenutzer (Benutzer benutzer)
        {
            benutzerliste.remove(benutzer);
            benutzerliste.trimToSize();
        }

        /**
         * Ruft das Laden der Benutzerdatei aus 
         * persistente_daten auf.
         */
        public void ladeBenutzerbestand () {
            persistente_daten.ladeAusDatei("Benutzer");
        }
        
        /**
         * Ruft das Schreiben der Benutzerdatei aus
         * persistente_daten auf.
         */
        public void speichereBenutzerbestand () {
            persistente_daten.schreibeInDatei("Benutzer");
        }

} // Ende Klasse BenutzerManager
